<?php

/**
 * @package usuarios
 * @author alvaro garcia
 * @license GPL3
 */
 
class Sesion
{
	
	private $iniciada;
	private $autenticada;
	private $usuario;
	private $plantilla;
	
	public function Sesion()
	{
		if(is_object($_SESSION['usuario']))
		{
			$this->iniciada=true;
			$this->autenticada=true;
			$this->usuario=$_SESSION['usuario'];
			$this->usuario->touch();
		}
		else
		{
			$this->iniciada=false;
			$this->autenticada=false;
			$this->usuario=new Usuario();
		}
	}
	
	/**
	 * Devuelve el usuario autenticado
	 * @return Usuario
	 */
	public function &getUsuario()
	{
		return $this->usuario;
	}
	
	public function crearCookieRecordatorio()
	{
		setcookie ("pass", $_GET['pass'], time () + 604800);
		setcookie ("email", $_GET['email'], time () + 604800);
	}
	
	public function getPlantilla()
	{
		return $this->plantilla;
	}
	/**
	 * Autentica el usuario. Si la contraseña está cifrada hay que pasarle true
	 * @param $usuario
	 * @param $password
	 * @param $cifrada
	 * @return unknown_type
	 */
	public function autenticar($email,$password,$cifrada)
	{
		/* Si la autenticacion es correcta, el usuario se copiara a la sesion */
		if($cifrada==false) $password=md5($password);
		
		$email = mysql_real_escape_string($email);
		$password = mysql_real_escape_string($password);
		$sql="select autenticar('".$email."','".$password."')";
		$valida=mysql_fetch_row(mysql_query($sql));
		if ($valida[0]>=0)
		{
				$this->autenticada=true;
				$this->usuario->cargarUsuarioConId($valida[0]);
				$this->usuario->touch();
		}
		return($this->autenticada);
	}
	
	public function setSessionId($id)
	{
		session_id($id);
	}
	
	/**
	 * Iniciar sesion
	 * @return boolean
	 */
	public function iniciar()
	{
		session_start();
		if(isset($_SESSION['usuarioId']))
		{
			/* Ya esta logeado, copiamos el usuario de la sesion*/
			$this->usuario=&$_SESSION['usuario'];
			//$this->usuario->load();
			$this->iniciada=true;
			return true;
		}
		elseif($this->autenticada==true)
		{
			/* Aqui se podria guardar el ultimo login */
			$_SESSION['usuarioId']=$this->usuario->getId();
			$_SESSION['usuario']=$this->usuario;
			return true;
		}elseif($_COOKIE['pass']!="")
		{
			//Le paso la cookie como tal, autenticar ya se encarga de evitar sql inyection
			if($this->autenticar($_COOKIE['email'],$_COOKIE['pass'],1))
				return $this->iniciar();
		}
		return false;
	}
	
	/**
	 * Cerrar sesion
	 */
	public function cerrar()
	{
		session_destroy();
		setcookie ("pass", "", time () - 604800);
		setcookie ("email", "", time () - 604800);
	}
} 

?>
